/*
 * @Version: 1.0
 * @Author: ZPK
 * @Date: 2022-11-13 14:23:38
 * @LastEditors: ZPK
 * @LastEditTime: 2022-11-23 20:18:16
 */
// 类型推断


// 类型推断是从右边向左边
// 1）赋值推断

let name = 'js'
// 2）函数返回值
function sum(a:string,b:string){ //函数的返回值也可以自动推断
    return a+b
}

// 3）反向推断  从左向右  上下文类型  
type ISum = (x:string,y:string)=>string

const sum1:ISum = (a,b)=>{//根据位置来进行推导
    return a+b
}

type ICallback = (x:string,y:string)=>void //不关心返回值

function fn(cb:ICallback){
    let r = cb('a','b') //调用函数后不会根据返回值来推导，默认采用就是上下文中的声明的类型
}
// 函数的参数 推断是按照上下文类型的位置来推断的
fn((a,b)=>{

})
// void 为什么设计成这个样子？干脆直接  要求必须void不就好了吗？


export{}